// Copyright (c) 2020 Presto Labs Pte. Ltd.
// Author: donggu

#pragma once

#include "coin2/exchange/base/executor/topic_publisher.h"

// any subsystem based on boost asio is marked with this class
class IAsyncActor {
 public:
  virtual void StartAsync() = 0;  // spawn async tasks. ioc loop may/may not be running
  virtual void StopAsync() = 0;  // stop async tasks. ioc loop is running
  virtual ~IAsyncActor() = default;
};

class ISyncActor {
 public:
  virtual void Prepare() = 0;
  virtual void Cleanup() = 0;
  virtual ~ISyncActor() = default;
};
